home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / etc / hotplug / ieee1394.agent < prev    next >
Text File  |  2006-05-01  |  3KB  |  122 lines

  1. #!/bin/sh
  2. #
  3. # IEEE1394-specific hotplug policy agent.
  4. #
  5. # This should handle 2.4.10 (or later) IEEE1394 hotplugging, with a
  6. # consistent framework for adding device and driver specific treatments.
  7. #
  8. # Kernel IEEE1394 params are:
  9. #    
  10. #    ACTION=add or remove
  11. #    VENDOR_ID=24 bit vendor id
  12. #    GUID=64 bit globally unique id
  13. #    SPEFICIER_ID=24 bit id of owner of specification
  14. #    VERSION=version of specification
  15. #
  16. # See IEEE1212 for details on these parameters.
  17. #
  18. # HISTORY:
  19. #    26-Mar-2002    Small cleanups to match other .agent files. (gkh)
  20. #    16-Sept-2001    Initial version from Kristian Hogsberg
  21. #            <hogsberg@users.sourceforge.net> (plus tweaks)
  22. #
  23. # $Id: ieee1394.agent,v 1.13 2004/09/20 21:43:37 kroah Exp $
  24. #
  25.  
  26. cd /etc/hotplug
  27. . ./hotplug.functions
  28. # DEBUG=yes export DEBUG
  29.  
  30. # generated by modutils 2.4.9 or later, for 2.4.10 and later kernels
  31. MAP_CURRENT=$MODULE_DIR/modules.ieee1394map
  32.  
  33. # accumulates list of modules we may care about
  34. DRIVERS=
  35.  
  36. if [ "$ACTION" = "" ]; then
  37.     mesg Bad IEEE1394 agent invocation
  38.     exit 1
  39. fi
  40.  
  41.  
  42. device_vendor_id=$((0x$VENDOR_ID))
  43. device_specifier_id=$((0x$SPECIFIER_ID))
  44. device_version=$((0x$VERSION))
  45.  
  46. MATCH_VENDOR_ID=0x0001
  47. MATCH_SPECIFIER_ID=0x0004
  48. MATCH_VERSION=0x0008
  49.  
  50. #
  51. # stdin is "modules.ieee1394map" syntax
  52. # on return, all matching modules were added to $DRIVERS
  53. #
  54. ieee1394_map_modules ()
  55. {
  56.     # comment line lists (current) pci_device_id field names
  57.     read ignored
  58.  
  59.     while read module match_flags vendor_id model_id specifier_id version
  60.     do
  61.     : check match for $module
  62.  
  63.     # convert from hex to dec
  64.     match_flags=$(($match_flags))
  65.     vendor_id=$(($vendor_id)); model_id=$(($model_id))
  66.     specifier_id=$(($specifier_id)); version=$(($version))
  67.  
  68.     : vendor_id $vendor_id $device_vendor_id
  69.     if [ $(($match_flags & $MATCH_VENDOR_ID)) -ne 0 ] && [ $vendor_id -ne $device_vendor_id ]; then
  70.         continue
  71.     fi
  72.  
  73.     : specifier_id $specifier_id $device_specifier_id
  74.     if [ $(($match_flags & $MATCH_SPECIFIER_ID)) -ne 0 ] && [ $specifier_id -ne $device_specifier_id ]; then
  75.         continue
  76.     fi
  77.  
  78.     : version $version $device_version
  79.     if [ $(($match_flags & $MATCH_VERSION)) -ne 0 ] && [ $version != $device_version ]; then
  80.         continue
  81.     fi
  82.  
  83.         DRIVERS="$module $DRIVERS"
  84.     done
  85. }
  86.  
  87. #
  88. # What to do with this IEEE1394 hotplug event?
  89. #
  90. case "$ACTION" in
  91.  
  92. add)
  93.     LABEL="IEEE1394 product 0x$VENDOR_ID/0x$SPECIFIER_ID/0x$VERSION"
  94.  
  95.     # on 2.4 systems, modutils maintains MAP_CURRENT
  96.     if [ -r $MAP_CURRENT ]; then
  97.         load_drivers ieee1394 $MAP_CURRENT "$LABEL"
  98.     fi
  99.  
  100.     if [ "$DRIVERS" = "" ]; then
  101.     mesg "... no drivers for $LABEL"
  102.     exit 2
  103.     fi
  104.     ;;
  105.  
  106. remove)
  107.     ieee1394_map_modules < $MAP_CURRENT
  108.     for MODULE in $DRIVERS
  109.     do
  110.     if [ -x $HOTPLUG_DIR/ieee1394/$MODULE ]; then
  111.             $HOTPLUG_DIR/ieee1394/$MODULE
  112.     fi
  113.     done
  114.     ;;
  115.  
  116. *)
  117.     debug_mesg "IEEE1394 '$ACTION' event not supported"
  118.     exit 1
  119.     ;;
  120.  
  121. esac
  122.